package com.yvon.service.demo.spring.beans.factory.config;

import com.yvon.service.demo.spring.beans.factory.HierarchicalBeanFactory;

/**
 * 可配置bean工厂
 *
 * 同时继承了HierarchicalBeanFactory 和 SingletonBeanRegistry 这两个接口，即同时继承了分层和单例类注册的功能。
 *
 * @author Yvon
 * @since 2022-12-08
 */
public interface ConfigurableBeanFactory extends HierarchicalBeanFactory, SingletonBeanRegistry {

    /**
     * Bean作用域：单例
     */
    String SCOPE_SINGLETON = "singleton";

    /**
     * Bean作用域：原型
     */
    String SCOPE_PROTOTYPE = "prototype";

    /**
     * 添加bean后置处理器
     *
     * @param beanPostProcessor 添加bean后置处理器
     */
    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);

    /**
     * 销毁单例对象
     */
    void destroySingletons();
}
